]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
extensionPrefs: Always redefine getCurrentExtension() on prefsModule access
authorFlorian Müllner <fmuellner@gnome.org>
Sat, 30 Nov 2019 18:15:14 +0000 (19:15 +0100)
committerFlorian Müllner <florian.muellner@gmail.com>
Thu, 5 Dec 2019 15:24:34 +0000 (15:24 +0000)
We have three interactions with an extension's prefs module:
 - we import the module
 - we call its init() hook
 - we call its buildPrefsWidget() hook

The first two are one-time actions where we expect most getCurrentExtension()
calls (local imports, initTranslations() etc.).

However it's still possible that the extension will use the utility function
in buildPrefsWidget() as well, either directly or via other functions like
getSettings(): Make sure getCurrentExtension() returns the correct extension
in that case, not the last one whose preferences were initialized.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/873

js/extensionPrefs/main.js

index 387f7f325b6ed321687e2333d0808c929fdc5cf9..9d94c5a27a93361a701cd12dd7eb5a7113f2e395 100644 (file)
@@ -657,12 +657,12 @@ class ExtensionRow extends Gtk.ListBoxRow {
     }
 
     get prefsModule() {
+        // give extension prefs access to their own extension object
+        ExtensionUtils.getCurrentExtension = () => this._extension;
+
         if (!this._prefsModule) {
             ExtensionUtils.installImporter(this._extension);
 
-            // give extension prefs access to their own extension object
-            ExtensionUtils.getCurrentExtension = () => this._extension;
-
             this._prefsModule = this._extension.imports.prefs;
             this._prefsModule.init(this._extension.metadata);
         }